package br.com.playonline.util.bolao;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import br.com.playonline.domain.Ganho;
import br.com.playonline.domain.Jogo;
import br.com.playonline.domain.Resultado;
import br.com.playonline.dto.ResultadoBolaoDTO;
import br.com.playonline.dto.ResultadoDTO;

public class ResultadoLotoMania extends GeradorResultado {

	@Override
	public List<Resultado> gerar(List<Jogo> jogos, ResultadoBolaoDTO resultadoBolaoDTO) {
		List<Resultado> resultados = new ArrayList<Resultado>();
		List<String> sequenciaSorteada = Arrays.asList(resultadoBolaoDTO.getSeqSorteada().split(" "));
		String[] sequenciaJogada;
		Integer numerosDeAcerto = 0;
		List<ResultadoDTO> resultadoDTOs = resultadoBolaoDTO.getResultadoDTOs();
		ResultadoDTO resultado20 = resultadoDTOs.get(0);
		ResultadoDTO resultado19 = resultadoDTOs.get(1);
		ResultadoDTO resultado18 = resultadoDTOs.get(2);
		ResultadoDTO resultado17 = resultadoDTOs.get(3);
		ResultadoDTO resultado16 = resultadoDTOs.get(4);
		ResultadoDTO resultado0 = resultadoDTOs.get(5);
		for (Jogo jogo : jogos) {
			sequenciaJogada = jogo.getSequencia().split("-");
			for (String value : sequenciaJogada) {
				if (sequenciaSorteada.contains(value)) {
					numerosDeAcerto++;
				}
			}
			if (numerosDeAcerto >= 16) {
				Resultado resultado = new Resultado();
				List<Ganho> ganhos = new ArrayList<Ganho>();
				if (numerosDeAcerto == 16) {
					Ganho ganho = new Ganho();
					ganho.setTipoDeGanho("16 Acertos");
					ganho.setValorDoGanho(resultado16.getValorDoGanho());
//					ganho.setMultiplicador(obtemMultiplicadorQuadra()[sequenciaJogada.length - 7][0]);
					ganho.setQntDeGanhadores(resultado16.getQntDeGanhadores());
					ganhos.add(ganho);						
				}
				if (numerosDeAcerto == 17) {
					Ganho ganho = new Ganho();
					ganho.setTipoDeGanho("17 Acertos");
					ganho.setValorDoGanho(resultado17.getValorDoGanho());
//					ganho.setMultiplicador(obtemMultiplicadorQuadra()[sequenciaJogada.length - 7][0]);
					ganho.setQntDeGanhadores(resultado17.getQntDeGanhadores());
					ganhos.add(ganho);						
				}
				//TODO Se ganhador acertar sena, ele ganha a sena, ganha a quina se jogo maior que 6 e ganha todas a quadra em jogos maior que 7.
				if (numerosDeAcerto == 18) {
					Ganho ganho = new Ganho();
					ganho.setTipoDeGanho("18 Acertos");
					ganho.setValorDoGanho(resultado18.getValorDoGanho());
//					ganho.setMultiplicador(obtemMultiplicadorQuadra()[sequenciaJogada.length - 7][0]);
					ganho.setQntDeGanhadores(resultado18.getQntDeGanhadores());
					ganhos.add(ganho);						
				}
				if (numerosDeAcerto == 19) {
					Ganho ganho = new Ganho();
					ganho.setTipoDeGanho("19 Acertos");
					ganho.setValorDoGanho(resultado19.getValorDoGanho());
//					ganho.setMultiplicador(obtemMultiplicadorQuadra()[sequenciaJogada.length - 7][0]);
					ganho.setQntDeGanhadores(resultado19.getQntDeGanhadores());
					ganhos.add(ganho);						
				}
				if (numerosDeAcerto == 20) {
					Ganho ganho = new Ganho();
					ganho.setTipoDeGanho("20 Acertos");
					ganho.setValorDoGanho(resultado20.getValorDoGanho());
//					ganho.setMultiplicador(obtemMultiplicadorQuadra()[sequenciaJogada.length - 7][0]);
					ganho.setQntDeGanhadores(resultado20.getQntDeGanhadores());
					ganhos.add(ganho);						
				}
				if (numerosDeAcerto == 0) {
					Ganho ganho = new Ganho();
					ganho.setTipoDeGanho("0 Acertos");
					ganho.setValorDoGanho(resultado0.getValorDoGanho());
//					ganho.setMultiplicador(obtemMultiplicadorQuadra()[sequenciaJogada.length - 7][0]);
					ganho.setQntDeGanhadores(resultado0.getQntDeGanhadores());
					ganhos.add(ganho);						
				}
				resultado.setGanhos(ganhos);
				resultado.setSeqJogoPremiado(jogo.getSequencia());
				resultados.add(resultado);
			}
			numerosDeAcerto = 0;
		}
		return resultados;
	}
}
